package org.huawei260.TiKu.B;

import java.util.Scanner;

/**
 * @Auther: qingle
 * @Date: 2024/10/27-17:10
 * @Description:
 *
 * 给你一串末加密的字符串str，通过对字符串的每一个字母进行改变来实现加密，加密方式是在每一字母str[i]偏移特定数组元素a[i]的量，数组a前三位已经赋值：a[0]=1,a[1]=2,a[2]=4。
 *
 *
 * 		当i>=3时，数组元素a[i]=a[i-1]+a[i-2]+a[i-3]。
 *
 *
 * 		例如: 原文 abcde 加密后 bdgkr，其中偏移量分别是1,2,4,7,13。
 *
 * 输入格式
 *
 * 		第一行为一个整数n (1 <= n <= 1000) ，表示有n组测试数据，每组数据包含一行，原文str(只含有小写字母，0 < 长度 <= 50)。
 *
 * 输出格式
 *
 * 		每组测试数据输出一行，表示字符串的密文
 *
 * 80% 通过率
 * @version: 1.0
 */
public class B_2503_2023B_字符串加密_answer {

		public static void main(String[] args) {
	Scanner sc = new Scanner(System.in);
	int n = sc.nextInt();

	String[] lines = new String[n];
	for (int i = 0; i < n; i++) {
		lines[i] = sc.next();
	}

	// 初始化a数组
	int[] a = new int[50];
	a[0] = 1;
	a[1] = 2;
	a[2] = 4;
	for (int i = 3; i < 50; i++) {
		a[i] = (a[i - 1] + a[i - 2] + a[i - 3]) % 26;//取余26
	}

	for (int i = 0; i < n; i++) {
		System.out.println(getResult(lines[i], a));
	}
}

  // 应用环形偏移处理公式
	private static char applyCyclicShift(char c, int offset) {
		// 应用环形偏移处理公式
		int shifted = (c - 'a' + offset + 26) % 26;
		return (char) ('a' + shifted);
	}

	public static String getResult(String str, int[] a) {
		// 为字符串的每一位字符添加a[i]偏移量
		char[] cArr = str.toCharArray();
		for (int i = 0; i < str.length(); i++) {
			cArr[i] = applyCyclicShift(cArr[i], a[i % 50]);// 取余26
		}
		return new String(cArr);
	}
}